// Implementación de la fábrica de DAO's MySQL

package mx.ipn.persistencia.mysql;

import java.io.*;
import java.sql.*;
import mx.ipn.persistencia.*;
import mx.ipn.persistencia.dao.*;

public class FabricaDeDAOsMySQL extends FabricaDeDAOs {
	public static final String DRIVER = "com.mysql.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://127.0.0.1:3306/saist";
	public static final String DBUSUARIO = "root";
	//public static final String DBPASSWORD = "rodolfo";

	public static final String DBPASSWORD = "phoenix";

	// método para crear las conexiones a MySql
	public static Connection crearConexion() throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		Class.forName(DRIVER).newInstance();
		Connection conexion = DriverManager.getConnection(DBURL, DBUSUARIO,
				DBPASSWORD);
		
		return conexion;
	}

	public static void iniciaLog(Class c){
		// Obtiene el nombre de la clase sin los paquetes
		String nombre = c.getName();
		int primerCaracter;
		
		primerCaracter = nombre.lastIndexOf ('.') + 1;
		if ( primerCaracter > 0 ) {
			nombre = nombre.substring ( primerCaracter );
		}

		// Crea el archivo e inicia el log
		PrintStream printStream;

		try{
			File dir = new File(mx.ipn.Constantes.DIRECTORIO_DE_LOGS);
			if(!dir.exists())
				dir.mkdirs();
			
			File file = new File(dir,"saist" + nombre + ".log");
			printStream = new PrintStream(new BufferedOutputStream(new FileOutputStream(file)), true);
			System.setErr(printStream);
			System.setOut(printStream);
		}catch(IOException e){
			System.err.println ("El archivo se niega cobardemente a ser escrito...");
		}
		
		System.out.println("El log ha nacido: " + new java.util.Date());
	}
	
	/*
	 * // Los MYSQLDAOs implementan a los DAOs normales
	 */
    public PuestoSalarioDAO getPuestoSalarioDAO(){
    	return new PuestoSalarioDAOMySQL();
    }
	public BitacoraSDAO getBitacoraSDAO() {
		return new BitacoraSDAOMySQL();
	}
	public BaseDAO getBaseDAO() {
		return new BaseDAOMySQL();
	}

	public BitacoraAccesoDAO getBitacoraAccesoDAO() {
		return new BitacoraAccesoDAOMySQL();
	}

	public BitacoraAsistenciaDAO getBitacoraAsistenciaDAO() {
		return new BitacoraAsistenciaDAOMySQL();
	}

	public BitacoraCastigoChoferDAO getBitacoraCastigoChoferDAO() {
		return new BitacoraCastigoChoferDAOMySQL();
	}

	public BitacoraCastigoUnidadDAO getBitacoraCastigoUnidadDAO() {
		return new BitacoraCastigoUnidadDAOMySQL();
	}

	public BitacoraChoferUnidadDAO getBitacoraChoferUnidadDAO() {
		return new BitacoraChoferUnidadDAOMySQL();
	}

	public BitacoraHorarioDAO getBitacoraHorarioDAO() {
		return new BitacoraHorarioDAOMySQL();
	}

	public BitacoraEmpleadoDAO getBitacoraEmpleadoDAO() {
		return new BitacoraEmpleadoDAOMySQL();
	}

	public BitacoraEconomicoDAO getBitacoraEconomicoDAO() {
		return new BitacoraEconomicoDAOMySQL();
	}

	public BitacoraPuestoDAO getBitacoraPuestoDAO() {
		return new BitacoraPuestoDAOMySQL();
	}

	public BitacoraServicioDAO getBitacoraServicioDAO() {
		return new BitacoraServicioDAOMySQL();
	}
	
	
	public BitacoraResponsableDAO getBitacoraResponsableDAO() {
		return new BitacoraResponsableDAOMySQL();
	}

	public BitacoraServicioTarjetaDAO getBitacoraServicioTarjetaDAO() {
		return new BitacoraServicioTarjetaDAOMySQL();
	}

	public BitacoraUnidadDAO getBitacoraUnidadDAO() {
		return new BitacoraUnidadDAOMySQL();
	}

	public CategoriaServicioDAO getCategoriaServicioDAO() {
		return new CategoriaServicioDAOMySQL();
	}

	public CalleDAO getCalleDAO() {
		return new CalleDAOMySQL();
	}

	public ChoferDAO getChoferDAO() {
		return new ChoferDAOMySQL();
	}

	public ClienteDireccionDAO getClienteDireccionDAO() {
		return new ClienteDireccionDAOMySQL();
	}

	public ClienteRfcDAO getClienteRfcDAO() {
		return new ClienteRfcDAOMySQL();
	}

	public ClienteDAO getClienteDAO() {
		return new ClienteDAOMySQL();
	}

	public ColoniaDAO getColoniaDAO() {
		return new ColoniaDAOMySQL();
	}

	public ColoniaCalleDAO getColoniaCalleDAO() {
		return new ColoniaCalleDAOMySQL();
	}

	public ColorAutoDAO getColorAutoDAO() {
		return new ColorAutoDAOMySQL();
	}

	public ComprobantePercepcionDescuentoDAO getComprobantePercepcionDescuentoDAO() {
		return new ComprobantePercepcionDescuentoDAOMySQL();
	}

	public DatosNominaDAOMySQL getDatosNominaDAO() {
		return new DatosNominaDAOMySQL();
	}
	
	public DescuentoEmpleadoDAOMySQL getDescuentoEmpleadoDAO() {
		return new DescuentoEmpleadoDAOMySQL();
	}

	public DescuentoHistorialDAO getDescuentoHistorialDAO() {
		return new DescuentoHistorialDAOMySQL();
	}

	public DescuentoPuestoDAO getDescuentoPuestoDAO() {
		return new DescuentoPuestoDAOMySQL();
	}

	public DescuentoDAO getDescuentoDAO() {
		return new DescuentoDAOMySQL();
	}

	public DetalleFacturaDAO getDetalleFacturaDAO() {
		return new DetalleFacturaDAOMySQL();
	}

	public DetallePrefacturaDAO getDetallePrefacturaDAO() {
		return new DetallePrefacturaDAOMySQL();
	}

	public DiaFestivoDAO getDiaFestivoDAO() {
		return new DiaFestivoDAOMySQL();
	}

	public DireccionDAO getDireccionDAO() {
		return new DireccionDAOMySQL();
	}

	/**/
	public EconomicoDAO getEconomicoDAO() {
		return new EconomicoDAOMySQL();
	}

	public EmpleadoDAO getEmpleadoDAO() {
		return new EmpleadoDAOMySQL();
	}

	public EstadoDAO getEstadoDAO() {
		return new EstadoDAOMySQL();
	}

	public FactorDAO getFactorDAO() {
		return new FactorDAOMySQL();
	}

	public FacturaDAO getFacturaDAO() {
		return new FacturaDAOMySQL();
	}

	public FormaPagoDAO getFormaPagoDAO() {
		return new FormaPagoDAOMySQL();
	}

	public HorarioDAO getHorarioDAO() {
		return new HorarioDAOMySQL();
	}

	public InstitucionFinancieraDAO getInstitucionFinancieraDAO() {
		return new InstitucionFinancieraDAOMySQL();
	}

	public MarcaDAO getMarcaDAO() {
		return new MarcaDAOMySQL();
	}

	public MotivoDAO getMotivoDAO() {
		return new MotivoDAOMySQL();
	}

	public MunicipioDAO getMunicipioDAO() {
		return new MunicipioDAOMySQL();
	}

	public PercepcionEmpleadoDAO getPercepcionEmpleadoDAO() {
		return new PercepcionEmpleadoDAOMySQL();
	}

	public PercepcionHistorialDAO getPercepcionHistorialDAO() {
		return new PercepcionHistorialDAOMySQL();
	}

	public PercepcionPuestoDAO getPercepcionPuestoDAO() {
		return new PercepcionPuestoDAOMySQL();
	}

	public PercepcionDAO getPercepcionDAO() {
		return new PercepcionDAOMySQL();
	}

	public PersonaDAO getPersonaDAO() {
		return new PersonaDAOMySQL();
	}

	public PuestoDAO getPuestoDAO() {
		return new PuestoDAOMySQL();
	}

	public RangoDAO getRangoDAO() {
		return new RangoDAOMySQL();
	}

	public ResponsableDAO getResponsableDAO() {
		return new ResponsableDAOMySQL();
	}

	public RfcDAO getRfcDAO() {
		return new RfcDAOMySQL();
	}

	public StatusDAO getStatusDAO() {
		return new StatusDAOMySQL();
	}

	public ServicioSistemaDAO getServicioSistemaDAO() {
		return new ServicioSistemaDAOMySQL();
	}

	public SubmarcaDAO getSubmarcaDAO() {
		return new SubmarcaDAOMySQL();
	}

	public TarjetaDAO getTarjetaDAO() {
		return new TarjetaDAOMySQL();
	}

	public TarjetaClienteDAO getTarjetaClienteDAO() {
		return new TarjetaClienteDAOMySQL();
	}

	public TipoBaseDAO getTipoBaseDAO() {
		return new TipoBaseDAOMySQL();
	}

	public GrupoUsuarioDAO getGrupoUsuarioDAO() {
		return new GrupoUsuarioDAOMySQL();
	}

	public TipoEmpleadoDAO getTipoEmpleadoDAO() {
		return new TipoEmpleadoDAOMySQL();
	}

	public TipoMotivoDAO getTipoMotivoDAO() {
		return new TipoMotivoDAOMySQL();
	}

	public TipoPercepcionDescuentoDAO getTipoPercepcionDescuentoDAO() {
		return new TipoPercepcionDescuentoDAOMySQL();
	}

	public TipoServicioDAO getTipoServicioDAO() {
		return new TipoServicioDAOMySQL();
	}

	public TipoTarjetaDAO getTipoTarjetaDAO() {
		return new TipoTarjetaDAOMySQL();
	}

	public TurnoDAO getTurnoDAO() {
		return new TurnoDAOMySQL();
	}

	public UnidadDAO getUnidadDAO() {
		return new UnidadDAOMySQL();
	}

	public UsuarioDAO getUsuarioDAO() {
		return new UsuarioDAOMySQL();
	}

}
